wx-App({

  globalData: {
    isFirstLogin:false, //判断是否第一次授权登录 ,ture为第一次登录
    canIUseGetUserProfile:false,//判断是否可用wx.getUserProfile
  },   
  
  //  判断手机号码
  isTelephone:function(telephone){
    // console.log('电话号码为',telephone)
    var mobile = /^[1][3,4,5,7,8][0-9]{9}$/;
    return mobile.exec(telephone);
  },
  // 判断邮箱
  isEmail:function(email){
    // console.log('电话号码为',telephone)
    var mobile =/^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
    return mobile.test(email);
  },
  // 、用户登录授权
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        wx.setStorage({
          key: 'login',
          data: true,
        })
        wx.setStorage({
          key: 'userInfo',
          data: res.userInfo,
        })
        wx.cloud.callFunction({
          name: 'login',
          complete: res => {
            wx.setStorage({
              key: 'openid',
              data: res.result.openid
            })
          }
        })
        console.log('第一次登录？',this.globalData.isFirstLogin)
        if(this.globalData.isFirstLogin){  //是否第一次授权
          wx.cloud.callFunction({
            name:'personal',
            data:{
              parameter:"addUser",
              class:'',
              email:'',
              name:'',
              nickName:res.userInfo.nickName,
              studentId:'',
              telephone:'',
            }
          }).then(res=>{
            
          }).catch(err=>{
            console.log('错误信息',err)
          })
        }
      },
      fail:(err)=>{
        console.log('登录失败了',err)
        wx.setStorage({
          key: 'login',
          data: false,
        })
        if(e==1){  //如果等于1则跳转到个人中心，这个是用来判断发布招募的
          wx.switchTab({
            url: '/pages/personal/index',
          })
        }
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    wx.getUserInfo({
      success: (res) => {
        wx.setStorage({
          key: 'login',
          data: true,
        })
        wx.setStorage({
          key: 'userInfo',
          data: res.userInfo,
        })
        wx.cloud.callFunction({
          name: 'login',
          complete: res => {
            wx.setStorage({
              key: 'openid',
              data: res.result.openid
            })
          }
        })
        console.log('第一次登录？',this.globalData.isFirstLogin)
        if(this.globalData.isFirstLogin){  //是否第一次授权
          wx.cloud.callFunction({
            name:'personal',
            data:{
              parameter:"addUser",
              class:'',
              email:'',
              name:'',
              nickName:res.userInfo.nickName,
              studentId:'',
              telephone:'',
            }
          }).then(res=>{
            
          }).catch(err=>{
            console.log('错误信息',err)

          })
        }
      },
      fail:(err)=>{
        console.log('登录失败了',err)
        wx.setStorage({
          key: 'login',
          data: false,
        })
       if(e==1){  //如果等于1则跳转到个人中心，这个是用来判断发布招募的
        wx.switchTab({
          url: '/pages/personal/index',
        })
       }
      }  
    })
  },

  //判断用户是否第一次登录
  isFirstLogin:function(){
    return new Promise((reslove, reject) => {
      wx.cloud.callFunction({
        name:'personal',
        data:{
          parameter:'getUser',
        },
        success: (res) => {  
          console.log('res是否登录',res)
          // console.log('res.result.data[0]',typeof res.result.data[0])
          if(res.result.data[0]==null){
            this.globalData.isFirstLogin=true
          }
          reslove(res);
        },
        fail: (msg) => {
          reject('请求失败');
        }
      })
   }) 
  },
  
   // 判断招募是否正在进行 
   isRecruitEndTime:function(endTime){
    if( Date.parse(new Date())/1000-endTime>0) {
      //  已结束
      return false
     }else{
     return true
     }
  },

  // 获取所有招募，用来展示首页
  getIndexRecruitAll:function(){
    return new Promise((reslove, reject) => {
       // 查询所有招募，并放入缓存
      wx.cloud.callFunction({
        name:'recruit',
        data:{
          parameter:'pagingGetRecruitAll',
        },
        success: (res) => {
          reslove(res.result);
          console.log('更新了首页的全部招募数据',res)
          wx.setStorageSync('indexRecruitAll',res.result)
        },
        fail: (msg) => {
          reject('请求失败');
        }
      })
    }) 
  },
   // 获取用户的申请数据
   getApplications:function() {
    return new Promise((reslove, reject) => {
    //申请状态默认为0，0审核中，通过1，不通过2
     wx.cloud.callFunction({
       name:'personal',
       data:{
         parameter:'getApplications',
       },
       success: (res) => {
         reslove(res.result);
         console.log('更新用户提交的申请信息成功',res)
         wx.setStorageSync('getMyApplications',res.result)
       },
       fail: (msg) => {
         reject('请求失败');
       }
     })
   }) 
    
  },
  
  // 获取用户发布的招募数据
  getRecruitAll:function(){
    return new Promise((reslove, reject) => {
      //申请状态默认为0，0审核中，通过1，不通过2
       wx.cloud.callFunction({
        name:'recruit',
        data:{
          parameter:'getRecruitByUserId',
        },
        success: (res) => {
          reslove(res.result);
          console.log('更新用户的发布的招募信息成功',res)
          wx.setStorageSync('recruitAll', res.result)
        },
        fail: (msg) => {
          reject('请求失败');
        }
      })
    }) 
 },

//  根据时间戳判断 几天前，刚刚，几分钟前
  formatMsgTime:function(timeStamp){
    var timeSpanStr;
    let  nowTime  = Date.parse(new Date())
   
    // console.log('现在时间戳',nowTime)
    // console.log('间隔时间',nowTime-timeStamp)
    let milliseconds = nowTime - timeStamp;
    if (milliseconds <= 1000 * 60 * 1) {
      timeSpanStr = '刚刚';
    }
    else if (1000 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60) {
      timeSpanStr = Math.round((milliseconds / (1000 * 60))) + '分钟前';
    }
    else if (1000 * 60 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24) {
      timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60)) + '小时前';
    }
    else if (1000 * 60 * 60 * 24 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24 * 15) {
      timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60 * 24)) + '天前';
    }else{
      
    }
    return timeSpanStr;
  },
  // 判断用户是不是管理员
  isAdmin:function(){
    wx.cloud.callFunction({
      name:'personal',
      data:{
        parameter:'getUser'
      }
    }).then(res=>{
      console.log('是不是管理员',res)
      if(res.result.data[0].isAdmin==1){
        console.log('是管理员')
        wx.setStorageSync('isAdmin', true)
      }else{
        console.log('不是管理员')
        wx.setStorageSync('isAdmin', false)
      }
    }).catch(err=>{
      console.log('请求失败',err)
    })
  },
  /**
   * 当小程序初始化完成时，会触发 onLaunch（全局只触发一次）
   */
  onLaunch: function () {
    if(wx.cloud){ //判断使用app的用户是否支持云环境。
      //初始化云环境
      wx.cloud.init({
        env:'cloud1-2guh9tam1ee71336', //选择云环境id
        traceUser:true
      })
    }
     // 判断是否可用wx.getUserProfile
     if (wx.getUserProfile) {
      this.globalData.canIUseGetUserProfile=true
    }
    // 判断用户是否第一次登录
    // this.isFirstLogin()
    // 每次启动刷新缓存
    this.getIndexRecruitAll()
    this.getRecruitAll()
    this.getApplications()
    this.isAdmin()
  },
  /**
   * 当小程序启动，或从后台进入前台显示，会触发 onShow
   */
  onShow: function (options) {
    
  },

  /**
   * 当小程序从前台进入后台，会触发 onHide
   */
  onHide: function () {
    
  },

  /**
   * 当小程序发生脚本错误，或者 api 调用失败时，会触发 onError 并带上错误信息
   */
  onError: function (msg) {
    
  }
})
